Conversation
Added input parameter for branch/tag to build workflow and updated tasks for Gradle assembly and linting.
Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/3c65d0bb-8d6d-4cb8-a190-3ffd08b3952c
…ing in CI Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/955283be-d653-443b-a8e1-5e388e1a509d
|
@copilot Forget the Release signing for now. Update the build.yml to just run ./gradlew assembleDebug and upload the app-debug.apk as the artifact. This will allow me to test the app on my phone immediately without setting up repo secrets |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
5 similar comments
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
…er-debug.apk Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/d1c62d37-d645-4585-ba19-d52144373d38
…Remote DroidGuard Server Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/f90967e8-c188-4e0c-85ba-bab945384146
|
@claude[agent] . We are simplifying the 'Remote DroidGuard Server' app by removing the QR code and focusing on manual IP entry. Task 1: The current implementation is unable to find the tailscale ip even when tailscale is active , use websearch to learn how to use tailscaleTask 2: Clean & Informative UI
Task 3: Tailscale Helper Logic
Goal: Create a lightweight, high-reliability server app that provides the IP and Port for manual entry into the microG client. |
- Fixed Tailscale IP detection to enumerate all interfaces and check 100.64.0.0/10 CGNAT range - Removed QR code and ZXing dependency for cleaner, lightweight UI - Added large Tailscale IP display in MaterialCardView with copy-to-clipboard button - Implemented smart Tailscale helper logic (install/open prompts based on app state) - Updated UI to show real-time IP status with clear messaging for each state - Status indicator and warning banner for connection status visibility Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/5805ae1d-0fe9-4b37-8af2-bed5003aa121
All tasks completed in commit 5916fc9: Task 1: Tailscale IP Detection Fixed ✓Research revealed the issue: Android uses Task 2: Clean & Informative UI ✓
Task 3: Tailscale Helper Logic ✓
The app is now lightweight, high-reliability, and provides clear IP/Port display for manual entry into microG client. |
|
@claude[agent] . We need to refine the initialization flow and user settings for the 'Remote DroidGuard Server' app. Task 1: Proactive Permission Requests
Task 2: Boot Toggle UI & Logic
Task 3: UI Cleanup
Goal: Ensure the app is fully configured for 24/7 uptime as soon as the user opens it, and give them control over the auto-start behavior. |
- Moved battery optimization check to onCreate() with first-launch dialog - Added "Start Server on Boot" MaterialSwitch with SharedPreferences (default: true) - Updated BootReceiver to check SharedPreferences before auto-starting - Dialog prompts user to set Battery to 'Unrestricted' on first launch - Start/Stop button no longer triggers permission dialogs (handled at app launch) Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com> Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/79116a82-17a0-4b79-ac6d-433d4de7c33f
... All tasks completed in commit 43d9a54: Task 1: Proactive Permission Requests ✓
Task 2: Boot Toggle UI & Logic ✓
Task 3: UI Cleanup ✓
UI Preview: |
|
@copilot Task: Fix RemoteHandleImpl to support multi-step DroidGuard sessions for Play Integrity Repository: /home/runner/work/GmsCore/GmsCore Background: The remote server app (in remote-droidguard-server/) already has the correct multi-step endpoints: POST /v2/init?flow=...&source=... → returns a sessionId string init(flow) and initWithRequest(flow, request) call POST /v2/init?flow=...&source=... on the configured server URL and store the returned sessionId. Also preserve flow and request as before. Constraints: Keep all existing single-shot behavior intact (if init() fails to get a session from the server, or if no sessionId was returned, fall back to the existing single-shot POST to /). |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
5 similar comments
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
|
@samuel-asleep The model You can try again without specifying a model (just If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: |
- Added sessionId field to track server-side session state - Updated init() and initWithRequest() to call POST /v2/init and store sessionId - Modified snapshot() to use /v2/snapshot with sessionId in multi-step mode - Added fallback to single-shot / endpoint for backwards compatibility - Updated close() to call POST /v2/close to clean up server session - Extracted helper methods: callInitEndpoint(), snapshotMultiStep(), snapshotSingleShot(), closeSession() - Maintains backwards compatibility with older servers that don't support /v2 endpoints This enables Play Integrity to work with remote DroidGuard by preserving session state across multiple snapshot() calls. Agent-Logs-Url: https://github.com/samuel-asleep/GmsCore/sessions/db326df7-a3da-4af0-8765-b369ea77a832 Co-authored-by: samuel-asleep <210051637+samuel-asleep@users.noreply.github.com>
Multi-Step DroidGuard Session Support Complete
Changes Made
sessionIdfield to store server session IDinit()to call POST/v2/initand store sessionIdinitWithRequest()to call POST/v2/initand store sessionIdsnapshot()to use/v2/snapshotwhen sessionId exists, fallback to/for backwards compatclose()to call POST/v2/closewhen sessionId existscallInitEndpoint()for session initializationsnapshotMultiStep()for multi-step snapshotssnapshotSingleShot()for backwards compatibilitycloseSession()for cleanup./gradlew :play-services-droidguard:assembleRelease✅How It Works
init()orinitWithRequest()is called, it attempts to POST to/v2/initto get a sessionIdsnapshot()calls via/v2/snapshot?sessionId=...close()is called, it POSTs to/v2/closeto clean up the server-side sessionsnapshot()automatically falls back to the old single-shot/endpointTesting
Build completed successfully with no compilation errors.
💬 Send tasks to Copilot coding agent from Slack and Teams to turn conversations into code. Copilot posts an update in your thread when it's finished.